home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / csytf2.z / csytf2
Text File  |  1996-03-14  |  6KB  |  199 lines

  1.  
  2.  
  3.  
  4. CCCCSSSSYYYYTTTTFFFF2222((((3333FFFF))))                                                          CCCCSSSSYYYYTTTTFFFF2222((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      CSYTF2 - compute the factorization of a complex symmetric matrix A using
  10.      the Bunch-Kaufman diagonal pivoting method
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE CSYTF2( UPLO, N, A, LDA, IPIV, INFO )
  14.  
  15.          CHARACTER      UPLO
  16.  
  17.          INTEGER        INFO, LDA, N
  18.  
  19.          INTEGER        IPIV( * )
  20.  
  21.          COMPLEX        A( LDA, * )
  22.  
  23. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  24.      CSYTF2 computes the factorization of a complex symmetric matrix A using
  25.      the Bunch-Kaufman diagonal pivoting method:
  26.  
  27.         A = U*D*U'  or  A = L*D*L'
  28.  
  29.      where U (or L) is a product of permutation and unit upper (lower)
  30.      triangular matrices, U' is the transpose of U, and D is symmetric and
  31.      block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
  32.  
  33.      This is the unblocked version of the algorithm, calling Level 2 BLAS.
  34.  
  35.  
  36. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  37.      UPLO    (input) CHARACTER*1
  38.              Specifies whether the upper or lower triangular part of the
  39.              symmetric matrix A is stored:
  40.              = 'U':  Upper triangular
  41.              = 'L':  Lower triangular
  42.  
  43.      N       (input) INTEGER
  44.              The order of the matrix A.  N >= 0.
  45.  
  46.      A       (input/output) COMPLEX array, dimension (LDA,N)
  47.              On entry, the symmetric matrix A.  If UPLO = 'U', the leading n-
  48.              by-n upper triangular part of A contains the upper triangular
  49.              part of the matrix A, and the strictly lower triangular part of A
  50.              is not referenced.  If UPLO = 'L', the leading n-by-n lower
  51.              triangular part of A contains the lower triangular part of the
  52.              matrix A, and the strictly upper triangular part of A is not
  53.              referenced.
  54.  
  55.              On exit, the block diagonal matrix D and the multipliers used to
  56.              obtain the factor U or L (see below for further details).
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. CCCCSSSSYYYYTTTTFFFF2222((((3333FFFF))))                                                          CCCCSSSSYYYYTTTTFFFF2222((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      LDA     (input) INTEGER
  75.              The leading dimension of the array A.  LDA >= max(1,N).
  76.  
  77.      IPIV    (output) INTEGER array, dimension (N)
  78.              Details of the interchanges and the block structure of D.  If
  79.              IPIV(k) > 0, then rows and columns k and IPIV(k) were
  80.              interchanged and D(k,k) is a 1-by-1 diagonal block.  If UPLO =
  81.              'U' and IPIV(k) = IPIV(k-1) < 0, then rows and columns k-1 and
  82.              -IPIV(k) were interchanged and D(k-1:k,k-1:k) is a 2-by-2
  83.              diagonal block.  If UPLO = 'L' and IPIV(k) = IPIV(k+1) < 0, then
  84.              rows and columns k+1 and -IPIV(k) were interchanged and
  85.              D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
  86.  
  87.      INFO    (output) INTEGER
  88.              = 0: successful exit
  89.              < 0: if INFO = -k, the k-th argument had an illegal value
  90.              > 0: if INFO = k, D(k,k) is exactly zero.  The factorization has
  91.              been completed, but the block diagonal matrix D is exactly
  92.              singular, and division by zero will occur if it is used to solve
  93.              a system of equations.
  94.  
  95. FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
  96.      If UPLO = 'U', then A = U*D*U', where
  97.         U = P(n)*U(n)* ... *P(k)U(k)* ...,
  98.      i.e., U is a product of terms P(k)*U(k), where k decreases from n to 1 in
  99.      steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2
  100.      diagonal blocks D(k).  P(k) is a permutation matrix as defined by
  101.      IPIV(k), and U(k) is a unit upper triangular matrix, such that if the
  102.      diagonal block D(k) is of order s (s = 1 or 2), then
  103.  
  104.                 (   I    v    0   )   k-s
  105.         U(k) =  (   0    I    0   )   s
  106.                 (   0    0    I   )   n-k
  107.                    k-s   s   n-k
  108.  
  109.      If s = 1, D(k) overwrites A(k,k), and v overwrites A(1:k-1,k).  If s = 2,
  110.      the upper triangle of D(k) overwrites A(k-1,k-1), A(k-1,k), and A(k,k),
  111.      and v overwrites A(1:k-2,k-1:k).
  112.  
  113.      If UPLO = 'L', then A = L*D*L', where
  114.         L = P(1)*L(1)* ... *P(k)*L(k)* ...,
  115.      i.e., L is a product of terms P(k)*L(k), where k increases from 1 to n in
  116.      steps of 1 or 2, and D is a block diagonal matrix with 1-by-1 and 2-by-2
  117.      diagonal blocks D(k).  P(k) is a permutation matrix as defined by
  118.      IPIV(k), and L(k) is a unit lower triangular matrix, such that if the
  119.      diagonal block D(k) is of order s (s = 1 or 2), then
  120.  
  121.                 (   I    0     0   )  k-1
  122.         L(k) =  (   0    I     0   )  s
  123.                 (   0    v     I   )  n-k-s+1
  124.                    k-1   s  n-k-s+1
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. CCCCSSSSYYYYTTTTFFFF2222((((3333FFFF))))                                                          CCCCSSSSYYYYTTTTFFFF2222((((3333FFFF))))
  137.  
  138.  
  139.  
  140.      If s = 1, D(k) overwrites A(k,k), and v overwrites A(k+1:n,k).  If s = 2,
  141.      the lower triangle of D(k) overwrites A(k,k), A(k+1,k), and A(k+1,k+1),
  142.      and v overwrites A(k+2:n,k:k+1).
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.